iT邦幫忙

2025 iThome 鐵人賽

DAY 19
0
Security

醫療數據的資安挑戰與創新解決方案系列 第 19

病人同意分享紀錄 – 智慧合約基礎

  • 分享至 

  • xImage
  •  

今天的學習目標是理解智慧合約在醫療領域的應用,特別是病人如何透過「同意」或「拒絕」來決定醫療紀錄是否能被共享,並能用 Python 撰寫簡單的同意/撤回模擬程式,體會智慧合約的自動化規則如何保障病人隱私。

一、理論重點

  1. 智慧合約 (Smart Contract):在區塊鏈上執行的自動化程式,能確保條件符合才允許動作。
  2. 在醫療領域:病人必須「明確同意 (Consent)」醫院、研究單位或保險公司才能讀取紀錄。
  3. 優點:
  • 病人有自主權,可隨時撤回同意。
  • 存取過程自動化,避免人為干預。
  • 留下完整存取紀錄,增加透明度。

二、案例分享

2021 年,台灣多家醫院參與的醫療資訊交換平台嘗試導入「病人同意管理」機制,病人可以透過健保卡或數位同意書,決定是否允許其他醫療院所調閱病歷。這就像智慧合約的概念,病人一旦拒絕同意,醫師端即便有技術能力也無法存取,避免了病歷在未經授權情況下被濫用。

三、簡單程式示範

class ConsentContract:
    def __init__(self):
        self.consent = {}

    def give_consent(self, patient_id):
        self.consent[patient_id] = True
        print(f" 病人 {patient_id} 同意分享紀錄")

    def revoke_consent(self, patient_id):
        self.consent[patient_id] = False
        print(f" 病人 {patient_id} 撤回同意")

    def check_access(self, patient_id, requester):
        if self.consent.get(patient_id, False):
            print(f" {requester} 可以存取 {patient_id} 的紀錄")
        else:
            print(f" {requester} 不可存取 {patient_id} 的紀錄")

# ---- 測試流程 ----
contract = ConsentContract()
contract.give_consent("PatientA")
contract.check_access("PatientA", "Hospital")
contract.revoke_consent("PatientA")
contract.check_access("PatientA", "ResearchLab")

這段程式碼模擬了一個「病人同意分享紀錄」的智慧合約概念。ConsentContract 類別用一個字典 self.consent 來記錄每個病人是否同意分享病歷,give_consent 代表病人同意,revoke_consent 代表撤回同意,check_access 則根據病人狀態判斷某個請求人(例如醫院或研究單位)是否能存取病歷。測試流程中,PatientA 先同意,醫院可以查看紀錄;後來撤回同意,研究單位就無法存取,完整體現了病人自主決定權。執行結果如下
https://ithelp.ithome.com.tw/upload/images/20250923/201693316uxbqdA5v5.png


上一篇
用 Python + hashlib 建立小型「醫療紀錄不可竄改」範例
下一篇
病人同意分享紀錄 – 存取紀錄與審計
系列文
醫療數據的資安挑戰與創新解決方案24
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言